(function () {
    let form = document.forms.loginForm,
        nmsg = document.getElementById('message');

    //1.提示
    function showMessage(clazz, msg) {
        //判断如果传进来的clazz为空,则nmsg提示词为空,并移除nmsg的j-err类名
        if (!clazz) {
            nmsg.innerHTML = '';
            // nmsg.classList.remove('j-suc');
            nmsg.classList.remove('j-err');
        } else {     //否则，提示词为传进来的msg，并添加传进来的类名
            nmsg.innerHTML = msg;
            nmsg.classList.add(clazz);
        }
    }

    //设置按钮状态：开放、禁用
    function disableSubmit(disabled) {
        form.loginBtn.disabled = !!disabled;  //根据传进来的数据disabled，判断按钮是否禁用
        let method = !disabled ? 'remove' : 'add';
        form.loginBtn.classList[method]('j-disabled');   //根据method判断结果，移除或添加j-disabled类名（禁用状态）
    }

    //错误提示
    function invalidInput(node, msg) {   //node表示传进来的是元素，msg需要提示的内容
        showMessage('j-err', msg);   //将错误状态时的类名和提示内容穿进showMessage函数
        node.classList.add('j-error');    //出现错误的元素，自身增加错误类名j-error
        node.focus();   //并且聚焦在这个元素
    }
    //清除错误提示
    function clearInvalid(node) {
        showMessage();
        node.classList.remove('j-error');   //需要移除错误的元素，自身移除错误类名j-error
    }

    //nick输入无效
    form.nick.addEventListener(
        'invalid', function (event) {
            event.preventDefault();   //阻止表单默认提交
            let input = form.nick;   //获取出现错误的元素
            invalidInput(input, '昵称不能为空');   //运行错误提示函数
        }
    );

    //清除所有错误状态
    form.addEventListener(
        'input', function (event) {
            // 清除错误提示状态
            clearInvalid(event.target);
            // 还原按钮状态
            disableSubmit(false);
        }
    );


    //通过登录"凭证"来判断是否登录成功
    //1.拿到localStorage内的凭证
    const token = window.localStorage.getItem('token'),
        uuid = window.localStorage.getItem('uuid');

    //2.判断token和uuid是否存在
    if (!token || !uuid) {
        //表示还没有登录过，需要跳转到登录页登录
        $('.off').addClass('active');
        $('.on').removeClass('active');
        $('.off-form').addClass('active');
        $('.on-form').removeClass('active');
        // $('fieldset').remove()
        // $('.msg').text('你还没有登录，请前往登录')
        // window.location.href = '../html/login.html'
    } else {
        //表示登录过，需要展示登录后的信息
        getInfo();
    }

    let DataDeal = {
        //将从form中通过$('#refer').serialize()获取的值转成json
        formToJson: function (data) {
            data = data.replace(/&/g, "\",\"");
            data = data.replace(/=/g, "\":\"");
            data = "{\"" + data + "\"}";
            return data;
        }
    };


    //3.请求用户信息
    function getInfo() {
        //发送用户请求
        $.ajax({
            url: 'http://hn216.api.yesapi.cn/?s=App.User.Profile',
            method: "GET",
            data: {uuid: uuid, token: token, app_key: '4DEDF61ED746BDF7FF3B924686226D93'},
            success(res) {
                if (res.data.err_code === 0) {
                    $('.on').addClass('active');
                    $('.off').removeClass('active');
                    $('.on-form').addClass('active');
                    $('.off-form').removeClass('active');

                    //展示用户个人资料
                    $('form [name=username]').val(res.data.info.username)
                    $('form [name=nick]').val(res.data.info.ext_info.nick)
                    $('form [name=age]').val(res.data.info.ext_info.age)
                    $('form [name=gender]').val(res.data.info.ext_info.gender)
                }
            }
        })
    }


    form.addEventListener(
        'submit', function (e) {
            // 禁用提交按钮
            disableSubmit(true);

            //阻止表单的默认提交行为
            e.preventDefault();

            //获取用户修改数据
            let dataCollect = $('form').serialize();
            dataCollect = decodeURIComponent(dataCollect, true);//防止中文乱码
            let jsondata = DataDeal.formToJson(dataCollect);//转化为json
            let ext_info = 'ext_info=' + jsondata;
            let data = ext_info + '&uuid=' + uuid + '&token=' + token + '&app_key=' + '4DEDF61ED746BDF7FF3B924686226D93';

            //发送请求
            $.post('http://hn216.api.yesapi.cn/?s=App.User.UpdateExtInfo', data, res => {
                console.log(res)
                if (res.data.err_code === 0) {
                    alert('个人资料修改成功！')
                }
            })
        }
    );

    //5.退出登录，直接刷新页面
    $('.logout').on('click', function () {
        //直接发送请求，退出登录
        $.get('http://hn216.api.yesapi.cn/?s=App.User.Logout', {
                uuid: uuid,
                token: token,
                app_key: '4DEDF61ED746BDF7FF3B924686226D93'
            },
            res => {
                //退出登录后，直接刷新页面
                window.localStorage.clear();
                window.location.href = '../html/index.html'
            })
    })

})();